/*
http://www.byond.com/developer/forum/?id=756010&single=1


TODO:

	make tooltips go to the left

	make character window have a pane with all of the character creation stuff in it, so it can be swapped with the main window
	and make that window that contains the child element be the main window

	update tooltip demo to reflect MAX_TOOLTIPS (and tooltip_direction)

	update mouse library for chowders stuff

	basic demo of the game

	Later:

		add exp to character stats

		if(restriction^my_bit & part_of_my_bit)

		make monsters flee when they come to a no monster area

		make a flee(null) so they flee for a predetermined amount of time even without a target

		fix tooltips

		rip help system from nameless lands

		stat autobalancing

		make some spells circular

		summon spell:
			einherjar

			make einherjar summon a basic monster by default (add a "summon_type" variable)

			make suffixes all five characters long (or some arbitrarily long number, so they can't have two of them)

			make the spell take the last-found summon_type as the monster it will summon

			some suffixes carry a monster type associated with it -- this determines what is summoned
				** every monster type will have an associated component

			how each stat affects the spell:
				range adds it's bonus to the number of monsters summoned
				power divides itself evenly amongst each monster
				speed grants a bonus to ac penetration, divided evenly


//make this work properly -- instead of using it how it is
//just give each mob an element variable
thunder < fire < water < thunder
thunder < earth < wind < thunder
holy <-> evil
healing is neutral

potential sub benefits:
	aoe class
	neutral magic crafting
	more character slots
	different kinds of armor (not OP, different)

	keep hub password and etc in an ini file so they're not uploaded

	store client side save file as well as server side -- if one fails to load, try the other

---------------NOTE ONE
attribute
    var
        base_level			// What our level actually is.
        boosted_levels		// What we use in damage calculations etc.
        experience			// How much XP do we have for this?
        experience_required // How much is required

    New(var/base_level)
        src.base_level = base_level
        src.experience_required = calculate_requirement()

    proc
   		modify_boost()
   		others
        /**
         * We use a proc for this because maybe some attributes
         * do special calculations. We can hide that in here.
         */
        get_level()
            var/result = src.base_level + src.boosted_levels
            return result < 0 ? 0 : result // If result is less than zero, return 0, otherwise, return the result.

        /**
         * This is what we call when we're "training" a stat.
         */
        add_experience(var/newExp as num)
            src.experience += newExp
            if (src.experience >= src.experience_required)
                level_up()

        /**
         * The nice thing about this being a proc is you can just
         * call it whenever, as a quest reward or something.
         */
        level_up()
            src.base_level++
            src.experience 	= 0
            src.experience_required = calculate_requirement()

        calculate_requirement()
            return round(src.base_level**3/20)

---------------NOTE THREE

learning keywords, the possibilities breakdown:
	they do not have to be strictly npcs
	npcs can be hidden in places
	choices! this means quests and etc
	reading! people will have to read books, etc, to find information -- this also takes the form of stone tablets
	listening! people should listen anyway! npcs can talk to each other.

possible restrictions on a keyword being used (not written -- just used):
	class
	alignment
	choices made

---------------NOTE FOUR
monsters can drop shards, orbs, ink jars, pigments, anything that can be used to make ink
this can lead to having things such as portable scribing stations or whatever too

---------------NOTE FIVE
make a cooldown datum, most like a hybrid between /restricted and /castbar


*/